package com.ytjj.qmyx.data.mapper;

import com.ytjj.qmyx.data.model.request.ProductUpdateRequest;
import com.ytjj.qmyx.data.model.response.ProductImgResponse;
import com.ytjj.qmyx.data.model.response.ProductSkuKeyResponse;
import com.ytjj.qmyx.data.model.response.ProductSkuValueResponse;
import com.ytjj.qmyx.data.model.response.ProductSpecResponse;
import com.ytjj.qmyx.mall.model.Product;
import com.ytjj.qmyx.mall.model.ProductSpec;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ProductDao {
    /**
     * 保存商品
     * @param product
     * @return
     */
    int insertEntity(Product product);

    /**
     * 保存商品图片
     */
    int insertProductImgBatch(@Param("list") List<ProductImgResponse> list);

    /**
     * 保存商品规格
     * @param list
     * @return
     */
    int insertProductSpecBatch(@Param("list") List<ProductSpecResponse> list);

    /**
     * 保存商品规格skuKey
     * @param productSkuKeyResponse
     * @return
     */
    int insertProductSkuKey(ProductSkuKeyResponse productSkuKeyResponse);

    /**
     * 保存商品规格skuValue
     * @param productSkuValueResponse
     * @return
     */
    int insertProductSkuValue(ProductSkuValueResponse productSkuValueResponse);

    /**
     * 查询商品是否存在
     */
    List<Product> queryBySupplyProductIdAndPlatformData(@Param("supplyProductId")Integer supplyProductId,@Param("platformData")String platformData);

    /**
     * 保存商品图片
     * @param img
     */
    void saveImg(@Param("img") List<ProductImgResponse> img);

    /**
     * 删除商品图片
     * @param productId
     * @param type
     */
    void deleteImg(@Param("productId")Integer productId,@Param("type")String type);

    /**
     * 更新商品信息
     * @param goodsRequest
     */
    void updateGoodsNew(ProductUpdateRequest goodsRequest);

    /**
     * 更新商品长标题和名称
     * @param productId
     * @param longTitle
     * @param productName
     */
    void updateProductLongTitle(@Param("productId")Integer productId,@Param("longTitle") String longTitle,@Param("productName") String productName,@Param("productImg") String productImg);

    /**
     * 根据供应链商品规格id查询规格
     */
    List<ProductSpecResponse> selectBySupIdList(@Param("supplyIdList")List<Integer> supplyIdList);

    /**
     * 根据商品id查询商品规格
     */
    List<ProductSpec> selectByProductIds(@Param("productIds") List<Integer> productIds);

    /**
     * 更新商品规格信息
     * @param productSpecResponse
     */
    void updateSpecInfoApp(ProductSpecResponse productSpecResponse);

    /**
     * 修改商品规格图
     */
    void updateSpecById(@Param("proImg") String proImg,@Param("id") Integer id);

    /**
     * 根据供应链商品id和平台查询商品
     */
    List<Product> queryBySupplyIdAndPlatformData(@Param("supplyProductIds")List<Integer> supplyProductIds,@Param("platformData")String platformData);
}

